package com.mk.main;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Scanner;

import javax.swing.JOptionPane;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.WebDriver;

import com.mk.email.SendMail;
import com.mk.manage.ManageEmail;
import com.mk.manage.ManageEpidemic;
import com.mk.manage.ManageUser;
import com.mk.pojo.User;
import com.mk.util.Util;
import com.mk.util.WebSelenium;

/**
 * @author 作者:秋哲 E-mail:2810201146@qq.com:
 * @version 创建时间：2020年8月24日 上午11:09:24
 * @description:
 */
// @SuppressWarnings("all")
public class RunEmailSign {
	
	private ManageEpidemic epidemic;
	private ManageUser manageUser;
	private ManageEmail email;
	private int runTime;
	
	public RunEmailSign() {
		this.manageUser = new ManageUser();
		this.epidemic = new ManageEpidemic(this.manageUser);
		this.email = new ManageEmail();
		this.runTime = 6;
	}
	
	
	
	/**
	 * 启动单个浏览器线程执行任务
	 * @version 创建时间：2020年10月22日 下午6:51:57
	 * @description
	 */
	public void start() {
		manageUser.initUserList();
		epidemic.run();
		System.out.println("-----------------------当前签到完成-----------------------");
	}
	/**
	 * 启动多个浏览器线程执行任务
	 * @version 创建时间：2020年10月22日 下午6:51:31
	 * @description
	 */
	public void startThread() {
		manageUser.initUserList();
		ArrayList<ManageEpidemic> list = new ArrayList<>();
		list.add(new ManageEpidemic(this.manageUser));
		for (ManageEpidemic webThread : list) {
			System.out.println("启动一个浏览器线程");
			webThread.start();
		}
		
		boolean flg;
		do {
			flg = false;
			for (ManageEpidemic webThread : list) {
				if (!webThread.getState().toString().equals("TERMINATED")) {
					flg = true;
					continue;
				}
			}
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				System.out.println("倒计时异常");
			}
		} while (flg);
		
		list.clear();
		System.out.println("-----------------------当前签到完成-----------------------");
	}
	
	/**
	 * 设置开始时间
	 * @version 创建时间：2020年10月22日 下午7:00:50
	 * @description
	 */
	@SuppressWarnings("resource")
	public void setRunTime() {
		System.out.println("输入签到时间:");
		this.runTime = new Scanner(System.in).nextInt();
	}
	
	/**
	 * 开始定时器
	 * @version 创建时间：2020年10月22日 下午6:56:11
	 * @throws InterruptedException 
	 * @description
	 */
	public void timerStart() throws InterruptedException {
		while (true) {
			
			if (Util.isRunTime(this.runTime)) {
				System.out.println("任务开始:"+new Date().toString());
				try {
					
					this.start();
					this.saveLog();
				} catch (Exception e) {
					e.printStackTrace();
					System.out.println("********主程序错误********");
					try {
						this.email.senWxEmailNat(e.toString(),"签到脚本 主程序错误");
					} catch (Exception e1) {
						e1.printStackTrace();
					}
					break;
				}
			}
			
			Thread.sleep(1000 * 60 * 50);
		}
	}
	private void saveLog() {
		try {
			SimpleDateFormat format = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
			String date = format.format(new Date());
			StringBuilder b = new StringBuilder();
			StringBuilder c = new StringBuilder();
			b.append("-----" + date + "----\t\r");
			c.append("-----异常----\t\r");
			int cLen = c.length();
			for (User user : manageUser.userList) {
				String stateTeday = user.getStateTeday();
				String stateTem = user.getStateTemperature();
				if(stateTeday==null || "".equals(stateTeday) || stateTeday.contains("异常")||
						stateTem==null || "".equals(stateTem) || stateTem.contains("异常")) {
					c.append(user.getName() != null ? user.getName() : user.getUsername());
					c.append(user.getName().length() == 2 ? "     " : " ");
					c.append(user.getStateTeday() + "	").append(user.getStateTemperature() + " ").append("\t\r");
					continue;
				}
				b.append(user.getName() != null ? user.getName().length() == 2? user.getName() + "一":user.getName() : user.getUsername());
				b.append(user.getName().length() == 2 ? "     " : " ");
				b.append(user.getStateTeday() + "	").append(user.getStateTemperature() + " ").append("\t\r");
			}
			email.senWxEmail(b.toString()+c.toString(),c.length()<=cLen?"签到成功":"签到存在异常");
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
	
	@SuppressWarnings({ "static-access", "resource" })
	public static void main(String[] args) throws InterruptedException{
		RunEmailSign run = new RunEmailSign();
		System.out.println("疫情签到脚本 版本2.0");
		run.setRunTime();
		run.timerStart();
//		run.start();
	}
}
